package org.example.course.controller;

import lombok.extern.slf4j.Slf4j;
import org.example.commonapi.domain.R;
import org.example.commonapi.domain.Task;
import org.example.commonapi.dto.TaskInfoDto;
import org.example.course.service.TaskService;
import org.example.course.until.TaskUntil;
import org.springframework.web.bind.annotation.*;

import javax.annotation.Resource;
import java.util.List;

@RestController
@RequestMapping("/course")
@Slf4j
public class CourseTaskController {

    @Resource
    private TaskService taskService;

    /**
     * 查询任务列表，条件查询（学生，老师）
     * @param courseId
     * @param type
     * @return
     */
    @GetMapping("/list/task/{id}")
    public R TaskList(@PathVariable("id") Long courseId,String name, Integer type) {
        // 查询任务列表
        List<TaskInfoDto> list = taskService.courseTaskList(courseId,name, type);
        return R.success(list);
    }


    /**
     * 根据状态查看任务（进行中，已结束）
     * @param courseId
     * @return
     */
    @GetMapping("/list/doing/task/{id}")
    public R doingTaskList(@PathVariable("id")Long courseId) {
        // 查询任务列表
        List<List<Task>> list = taskService.courseDoingTaskList(courseId);
        return R.success(list);
    }



    /**
     * 删除任务
     * @param id 任务id
     * @return
     */
    @DeleteMapping("/delete/task/{id}")
    public R deleteTask(@PathVariable("id") Long id) {
        taskService.removeById(id);
        return R.success();
    }

    /**
     * 查询单个任务内容
     * @param id
     * @return
     */
    @GetMapping("/get/task/{id}")
    public R getTask(@PathVariable("id") Long id) {
        Task task=taskService.getById(id);
        return R.success(task);
    }

    /**
     * 修改任务
     * @return
     */
    @PutMapping("/update/task")
    public R updateTask(@RequestBody Task task) {
        R result=TaskUntil.isTask(task);
        if(result!=null)return result;
        taskService.updateById(task);
        return R.success();
    }

    /**
     * 新增任务 （记得上传到课程的收件箱）
     * @param task
     * @return
     */
    @PostMapping("/insert/task")
    public R insertCourseTask(@RequestBody Task task) {
        R result=TaskUntil.isTask(task);
        if(result!=null)return result;
        taskService.insertTask(task);
        return R.success(task.getId());
    }


}
